package com.app.designpattern.structural.proxy2;

import android.util.Log;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;

/**
 * USER: zjw
 * DATA: 2019/4/25 0025
 * TIME: 下午 2:29
 */
public class TimeHandler implements InvocationHandler {
    //被代理的实例
    private Object target;

    //组合的传入被代理对像
    public TimeHandler(Object target) {
        this.target = target;
    }
    /**
     *
     * @param proxy :被代理对像
     * @param method :被代理对像的方法
     * @param args :方法中的参数
     * @return
     * @throws Throwable
     */
    //调用被代理的方法
    @Override
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
        doBeforSomthing();
        Object invoke = method.invoke(target);
        doAfterSomthing();
        return invoke;
    }
    //这是handler的精髓,可以根据自己的业务需求进行扩展
    private void doAfterSomthing() {
        Log.i("proxy1","汽车行使结束..");
    }

    private void doBeforSomthing() {
        Log.i("proxy1","汽车开始行使..");
    }
}
